package offer;

public class offer_0020 {
    public static void main(String[] args) {
        System.out.println(isNumber("+E3"));
    }
    public static boolean isNumber(String s) {
        int len=s.length();
        char[] list=s.toCharArray();
        int index=0;
        for(;index<len;++index){
            if(list[index]!=' '){
                if(list[index]=='+'||list[index]=='-'||(list[index]<='9'&&list[index]>='0')||list[index]=='.'){
                    break;
                }
                else return false;
            }
        }
        if(index==len) return false;
        int index2=index;
        for(;index2<len;++index2){
            if(list[index2]=='e'||list[index2]=='E'||list[index2]==' ') break;
        }
        boolean pointflag=false;
        for(int i=index;i<index2;++i){
            if(list[i]=='+'||list[i]=='-'){
                 if(i!=index) return false;
            }
            else if(list[i]=='.'){
                if(pointflag) return false;
                if(i>0&&list[i-1]<='9'&&list[i-1]>='0') pointflag=true;
                if(i<len-1&&list[i+1]<='9'&&list[i+1]>='0') pointflag=true;
                if(!pointflag) return false;
            }
            else if(list[i]<='9'&&list[i]>='0'){
                continue;
            }
            else{
                return false;
            }
        }

        for(index=index2;index<len;++index){
            if(list[index]==' ') break;
        }
        for(int i=index2;i<index;++i){
            if(list[i]=='e'||list[i]=='E'){
                if(i!=index2) return false;
                if(i<len-1&&(list[i+1]=='+'||list[i+1]=='-')){
                    if(i<len-2&&list[i+2]>='0'&&list[i+2]<='9') ;
                    else return false;
                }
                else if(i<len-1){
                    if(list[i+1]>='0'&&list[i+1]<='9') ;
                    else return false;
                }

                else if(i==len-1) return false;
                if(i>0&&list[i-1]=='.'){
                    if(i>1&&list[i-2]>='0'&&list[i-2]<='9') continue;
                    return false;
                }
                else if(i>0){
                    if(list[i-1]<='9'&&list[i-1]>='0') continue;
                    return false;
                }
                else if(i==0) return false;
            }
            else if(list[i]=='+'||list[i]=='-'){
                if((list[index2]!='e'&&list[index2]!='E')&&i!=index) return false;
                else if((list[index2]=='e'||list[index2]=='E')&&i!=index2+1) return false;
            }
            else if(list[i]<='9'&&list[i]>='0');
            else return false;
        }
        for(int i=index;i<len;++i){
            if(list[i]!=' '){
                return false;
            }
        }
        return true;
    }
}
